﻿/*
ID: tagdata.js
History
	0.1(2010-12-02) 파일생성 - soapiece
	0.2(2010-12-23) 두개이상의 element 처리 - soapiece

Description
	앨리먼트에 data를 저장함.
	
	Interface
		<div data="a: 123, b: 'abc', c: '가나다'" />
		var value = $( {해당 앨리먼트} ).tagdata().a;
		var result = $( {해당 앨리먼트} ).data( "tagdata" ).b;
		var value = $( {해당 앨리먼트 집합} ).tagdata().value[ 0 ].c;
	
Dependency
	jquery.js(1.4.3)
	jquery.ui.js(1.8.5)
*/
( function( $ ) {

$.extend( {
	tagdata: {
		get: function( elem ){
			var data = $.data( elem, "tagdata" );
			if ( data ) {
				return data;
			}
			data = "{}";
			var attr = elem.getAttribute( "data" );
			if ( attr ) {
				data = attr;
			}
			if ( data.indexOf( '{' ) < 0 ) {
				data = "{" + data + "}";
			}
			data = eval( "(" + data + ")" );
			$.data( elem, "tagdata", data );
			return data;
		}
	}
});

$.fn.tagdata = function(){
	var data = {};
	if( this.length < 2 ) {
		data = $.tagdata.get( this[0] );
	} else {
		var value = new Array( this.length );
		this.each( function( i ) {
			value[ i ] = $.tagdata.get( this ) || {};
		} );
		data.value = value;
	}
	return data;
};

} )( jQuery );
